const app = getApp()
import { editNickNameApi, editEmailApi, getUserInfoApi } from '../../../api/my.js'
import wxValidate from 'wechat-validate'
Page({
  // 将插件注入到页面实例中
  behaviors: [wxValidate],
  // 邮箱验证规则
  rules: {
    email: [{
      required: true,
      message: '邮箱为空!'
    },
    {
      pattern: /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/,
      message: '邮箱格式不正确!'
    }
    ]
  },
  /**
   * 页面的初始数据
   */
  data: {
    // 头像
    icon: '',
    nickName: '',
    email: ''
  },
  // 获取昵称
  getUserNickname(event) {
    this.setUserNickname(event.detail.value)
  },
  // 获取头像
  getUserAvatar(event) {
    this.updateAvatar(event.detail.avatarUrl)
  },
  // 更新用户头像
  updateAvatar(avatar) {
    // 调用 API 上传文件
    wx.uploadFile({
      // 接口地址
      url: wx.http.baseURL + '/admin/user/editMaterial',
      // 待上传的文件路径
      filePath: avatar,
      name: 'icon',
      formData: { userId: app.userId },
      success: (result) => {
        // 处理返回的数据
        const data = JSON.parse(result.data)
        // 检测接口是否调用成功
        if (data.code !== 200) return wx.utils.toast('上传头像失败!', 'error')
        this.setData({ icon: data.data.icon })
        // 存储在app.js中
        app.userInfo.icon = data.data.icon
      }
    })
  },
  // 更新昵称
  async setUserNickname(nickName) {
    if (!nickName.trim()) return wx.utils.toast('起个名字吧')
    // 发请求
    await editNickNameApi({ nickName, userId: app.userId })
    this.setData({ nickName })
    app.userInfo.nickName = nickName
  },
  // 更新邮箱
  async getUserEmail(e) {
    // 获取验证结果
    const { valid, message } = this.validate('email')
    // 如果验证不合法则不再执行后面的逻辑
    if (!valid) return wx.utils.toast(message, 'error')
    // 发请求
    const { email } = await editEmailApi({ email: e.detail.value, userId: app.userId })
    this.setData({ email })
    app.userInfo.email = email
  },

  async getUserProfile() {
    // 调用接口获取昵称和头像
    const res = await getUserInfoApi(app.userId)
    // 渲染数据
    app.userInfo = res
    const { icon, email, nickName }=res
    this.setData({ icon, email, nickName })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 没有登录跳出！
    if (!app.userId) return
    if (app.userInfo) {
      this.setData({ ...app.userInfo })
    } else {
      this.getUserProfile()
    }
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})